FIG. 1 illustrates a typical computing system 100 that includes a BIOS (Basic Input Output System) 110, a CPU (Central Processing Unit) 120, and a disk 130. When BIOS 110 receives a signal like a START signal, it may be tasked with booting the computing system 100. Booting the computing system 100 may include locating an operating system on disk 130 and beginning its execution on CPU 120. Additionally, booting the computing system 100 may include various pre-boot activities like locating hardware (e.g., disk 130), locating software (e.g., operating system loader), performing various diagnostics (e.g., checking memory), and so on.
At one point in time, system 100 may have included a BIOS 110 stored in a ROM (Read Only Memory). In this example, changing the BIOS 110 (e.g., installing new version), may have involved manually removing the ROM in which the BIOS 110 was stored and installing a new ROM. This required some technical skill and required the system 100 to be turned off and on.
At a later point in time, system 100 may have included a BIOS 110 stored in an EEPROM (Electrically Erasable Programmable ROM). An EEPROM is a type of PROM (Programmable ROM) that can be erased by exposing it to an electrical charge. The PROM may then be reprogrammed. Like other ROMs, an EEPROM may retain its contents when power to a system is turned off, which makes it suitable for storing a BIOS. In this example, changing the BIOS 110 may have included electrically erasing the PROM in which the BIOS 110 was stored and reprogramming it. In one example, this may have involved removing the PROM and reburning it. In another example, this may have involved reprogramming the PROM without removing it from system 100. However, reprogramming a PROM may have included writing the PROM byte-by-byte, which could be a time-consuming process. Even in an EEPROM based system, changing a BIOS 110 may have required technical skill and may have required a system to be turned off and on manually.
Recently is has become popular to store a BIOS associated with a computing system in a flash memory. Flash memory is a type of EEPROM that can be erased and reprogrammed in block sized amounts rather than byte by byte, thus making it typically faster to reprogram than a traditional EEPROM. When a BIOS is stored in a flash memory, it may be referred to as a flash BIOS. Also recently, in attempts to update boot processing, an interface between operating systems and platform firmware has developed. One example interface is the EFI (Extensible Firmware Interface), which includes, for example, data tables containing platform related information, boot services, runtimes services available to an operating system, an operating system loader, and so on. The EFI attempts to provide a standard environment for booting an operating system and/or running pre-boot applications.
FIG. 2 illustrates a high level diagram of a system 200 that is configured with an EFI 220. A BIOS 230 may logically reside between an operating system loader 210 and a set of hardware 240. The EFI 220 may facilitate interfacing the operating system loader 210 and the BIOS 230. In some examples, the EFI 220 may include an EFI shell through which skilled technicians may perform certain tasks, like reprogramming BIOS 230 with new system firmware. This reprogramming may require a user to take actions including, for example, starting the EFI shell, locating and mounting an EFI partition, copying files (e.g., binary input file, configuration file) to the newly mounted EFI partition, restarting the system and restarting the EFI shell, locating and entering a folder into which the files were copied, running an EFI shell level utility and providing it with arguments, following a set of instructions provided by the utility, restarting the system again, and verifying that the update completed in a desired fashion. This conventional approach may tax the technical know how and patience of a typical PC user.